This invention relates to the field of computer systems. More particularly, a system and methods are provided for facilitating client-server communications without using persistent (e.g., TCP or Transmission Control Protocol) communication connections.
Existing client-server communication architectures usually require persistent TCP communication connections to ensure the server can always communicate with the client, and vice versa. When a persistent communication connection is established between two computing devices, each device dedicates certain resources to the connection, such as a communication socket, a TCP communication port, memory, etc.
A persistent connection remains open as long as both devices keep the necessary resources dedicated to the connection. Because the connection remains open indefinitely, either device can send a communication to the other device at any time, without having to take action normally associated with opening a communication session (e.g., handshaking, authentication).
Even if a client is situated behind a firewall, proxy or Network Address Translator (NAT) device designed to protect the client from unsolicited communications, a server having a persistent connection with the client will be able to send communications at any time. If a persistent connection was not established, communications from the server to the client might be blocked.
However, because resources must be dedicated to each persistent connection maintained by a device, there is a finite limit on the number of client connections a server may host. Therefore, depending on the application and the amount and type of resources that must be dedicated, a plethora of servers may be required to accommodate all clients desiring simultaneous application sessions. This may entail substantial expense, in both the acquisition and maintenance of many servers.
For example, a traditional instant messaging system or application may have millions of users desiring simultaneous use of the system. A server hosting the application may only be able to serve on the order of twenty-five thousand simultaneous connections.
Thus, there is a need for a more scaleable system and method for supporting client-server communications
In addition, because each client in a client-server architecture typically establishes a persistent connection with just one server, only that server can send communications (e.g., instant messages from other clients) to the client. All communications to or from the client must transit that one server, thereby increasing its workload.
There is thus also a need for a client-server communication architecture that does not limit a client's communication access to a single server.